﻿using System;
using System.Data;
using System.Data.SqlClient;
using System.Text.RegularExpressions;
using consultasSql;
using consultasSql.consultasVarias;
using ot;
using validarDatos;

public partial class Stdby_OrdenTrabajo_facProveedor : System.Web.UI.Page
{
    private void mostrarMensaje(string mensaje)
    {
        System.Text.StringBuilder sbMensaje = new System.Text.StringBuilder();

        sbMensaje.Append("<script type='text/javascript'>");
        sbMensaje.AppendFormat("alert('{0}');", mensaje);
        sbMensaje.Append("</script>");
        ClientScript.RegisterClientScriptBlock(this.GetType(), "Mensaje", sbMensaje.ToString());
    }


    /*---------------------------------------------------------*/
    protected void btnCancelar_Click(object sender, EventArgs e)
    {
        Response.Redirect("../tabOrdenTrabajo/facProveedor.aspx", false);
    }


    /*---------------------------------------------------------*/

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            if (Session["idOt"] != null)
            {

                /*--------------*/
                //recargo la pagina para poder mostrar los botones que se activaron luego de guardar los datos, de acuerdo a los permisos
                string exito = Request.QueryString["exito"];

                if (!String.IsNullOrEmpty(exito))
                {
                    if (exito.Equals("0"))
                    {
                        mostrarMensaje(CMensajes.mensajeOperacionExitosa());
                    }
                }
                /*--------------*/



                if (!String.IsNullOrEmpty(Session["idOt"].ToString().Trim()))
                {
                    cargarCampos(Convert.ToInt32(Session["idOt"].ToString().Trim()));
                }
                else
                {
                    Response.Redirect("~/Stdby/OrdenTrabajo/tabOrdenTrabajo/ingresoOrdenTrabajo.aspx", false);
                }
            }
            else
            {
                Response.Redirect("../ingresoOrdenTrabajo/ingresoOrdenTrabajo.aspx");
            }
        }
    }


    //cargo los campos desde la tabla otcab
    private void cargarCampos(int Id)
    {
        try
        {
            string consulta = "SELECT NroFC, TipoFC, FechaFC, ImporteFC, ObsFC FROM OtCab WHERE Id = @Id";

            SqlCommand command = new SqlCommand();


            command.CommandType = CommandType.Text;
            command.CommandText = consulta;

            command.Parameters.Clear();

            command.Parameters.AddWithValue("@Id", Id);


            DataTable tabla = new CDarDataSet().darDataTable(command);

            txtNroFactura.Text = tabla.Rows[0][0].ToString();
            txtTipoFactura.Text = tabla.Rows[0][1].ToString();
            txtFechaFactura.Text = tabla.Rows[0][2].ToString();
            txtImporteFacturado.Text = tabla.Rows[0][3].ToString();
            txtObservaciones.Text = tabla.Rows[0][4].ToString();

        }
        catch { }

    }


    protected void btnGuardar_Click(object sender, EventArgs e)
    {
        if (comprobarCampos())
        {
            updateInsert();
        }
    }


    //comprobar campos
    private bool comprobarCampos()
    {
        lblNroFactura.Visible = false;
        lblTipoFactura.Visible = false;
        lblFechaFactura.Visible = false;
        lblImporteFacturado.Visible = false;
        lblObservaciones.Visible = false;

        txtNroFactura.ToolTip = null;
        txtTipoFactura.ToolTip = null;
        txtFechaFactura.ToolTip = null;
        txtImporteFacturado.ToolTip = null;
        txtObservaciones.ToolTip = null;

        bool bandera = true;

        try
        {
            if (!String.IsNullOrEmpty(txtNroFactura.Text.Trim()))
            {
                Regex rex = new Regex(@"^[0-9]{1,4}(\-[0-9]{8,8})?$"); //formato 0001-00001234

                if (!rex.IsMatch(txtNroFactura.Text.Trim()))
                {
                    txtNroFactura.ToolTip = "Ingrese un número de factura valido.";
                    lblNroFactura.Visible = true;
                    bandera = false;
                }
            }
            else
            {
                txtNroFactura.ToolTip = "Ingrese un valor.";
                lblNroFactura.Visible = true;
                bandera = false;
            }

            if (!CValidaDatos.validaPalabras(txtTipoFactura.Text.Trim()) || String.IsNullOrEmpty(txtTipoFactura.Text.Trim()))
            {
                txtTipoFactura.ToolTip = CMensajes.mensajeValidaPalabra();
                lblTipoFactura.Visible = true;
                bandera = false;
            }
            else
            {
                if (txtTipoFactura.Text.Trim().Length > 1)
                {
                    txtTipoFactura.ToolTip = "Solo puede contener un caracter.";
                    lblTipoFactura.Visible = true;
                    bandera = false;
                }

            }

            if (!CValidaDatos.validaFecha(txtFechaFactura.Text.Trim()))
            {
                txtFechaFactura.ToolTip = CMensajes.mensajeValidaFecha();
                lblFechaFactura.Visible = true;
                bandera = false;
            }

            if (!CValidaDatos.validaDecimal(txtImporteFacturado.Text.Trim()) || String.IsNullOrEmpty(txtImporteFacturado.Text.Trim()))
            {
                txtImporteFacturado.ToolTip = CMensajes.mensajeValidaNumero();
                lblImporteFacturado.Visible = true;
                bandera = false;
            }

            if (!CValidaDatos.validaPalabras(txtObservaciones.Text.Trim()))
            {
                txtObservaciones.ToolTip = CMensajes.mensajeValidaPalabra();
                lblObservaciones.Visible = true;
                bandera = false;
            }
        }
        catch
        {
            bandera = false;
        }

        return bandera;
    }


    //update o insertObjeto_Accesorios
    private void updateInsert()
    {
        try
        {

            CFacProveedor objeto = new CFacProveedor
            {
                NroFC = txtNroFactura.Text.Trim(),
                TipoFC = txtTipoFactura.Text.Trim().ToUpper(),
                FechaFC = txtFechaFactura.Text.Trim(),
                ImporteFC = txtImporteFacturado.Text.Trim(),
                ObsFC = txtObservaciones.Text.Trim(),
            };

            CConsultaFactura consulta = new CConsultaFactura();


            if (Session["idOt"] != null)
            {
                if (!String.IsNullOrEmpty(Session["idOt"].ToString().Trim()))
                {
                    objeto.Id = Convert.ToInt32(Session["idOt"].ToString().Trim());

                    if (consulta.update(objeto))
                    {
                        //si fue exitosa envio 0, para luego mostrar el mensaje
                        Response.Redirect("../tabOrdenTrabajo/facProveedor.aspx?exito=0", false);
                    }
                    else
                    {
                        mostrarMensaje(CMensajes.mensajeOperacionFallida());
                    }
                }
                else //si es null, redirigimos, debido a que algo sucedio
                {
                    Response.Redirect("../ingresoOrdenTrabajo/ingresoOrdenTrabajo.aspx");
                }
            }
            else //si es null, redirigimos, debido a que algo sucedio
            {
                Response.Redirect("../ingresoOrdenTrabajo/ingresoOrdenTrabajo.aspx");
            }

        }
        catch
        {
            mostrarMensaje(CMensajes.mensajeOperacionFallida());
        }
    }


}